package cn.jcby.app.lebu.service;

import cn.jcby.app.lebu.controller.req.*;
import cn.jcby.app.lebu.controller.res.PlaningInfoRes;
import cn.jcby.app.lebu.controller.res.UserMotionPlanInfoRes;
import cn.jcby.app.lebu.entity.UserMotionPlanEntity;
import cn.jcby.app.lebu.utils.PageUtils;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.scheduling.annotation.Async;

import java.util.List;

/**
 * 计划管理
 *
 * @author lht
 * @email 
 * @date 2023-12-07 15:13:35
 */
public interface UserMotionPlanService extends IService<UserMotionPlanEntity> {

    PageUtils myMotionPage(UserMotionPlanListReq req);

    void add(AddUserMotionPlanReq req) ;

    void updateBy(UserMotionPlanEntity userMotionPlan) ;


    UserMotionPlanInfoRes getInfoById(String id);

    void joinPlan(String id);

    void cancelJoinPlan(String id);

    void deleteById(String id);

    void forceEndPlan(String id);

    void startPlan(UserStartPlanReq req);

    PageUtils publisherNewPage(PublisherListReq req);

    void deleteByIdList(List<String> idList);

    PlaningInfoRes planingInfo(String id);

    void finishPlan(FinishPlanReq req);
    @Async
    void completePlan(UserMotionPlanEntity e) ;

    void proCancelJoinPlan(String id);
}

